L1-009 N个数求和

题目 L1-009 N个数求和

image-8bdd6424

思路分析

image-c48ce4ff

代码实现

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
typedef long long LL;

void work(LL NewFZ,LL NewFM,LL *SumFZ,LL *SumFM){
	*SumFZ=*SumFZ * NewFM+ *SumFM * NewFZ;
	*SumFM=*SumFM*NewFM;
	LL gys=__gcd(*SumFM,*SumFZ);
	*SumFM/=gys;
	*SumFZ/=gys;
}

int main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int N;scanf("%d", &N);
	LL SumFZ=0;
	LL SumFM=1;
	for(int i=0;i<N;i++){
		LL NewFM,NewFZ;
		scanf("%lld/%lld",&NewFZ,&NewFM);
		work(NewFZ,NewFM,&SumFZ,&SumFM);
	}

	if(SumFZ%SumFM==0){
		printf("%lld\n",SumFZ/SumFM);
	}else if(abs(SumFZ) > SumFM){
		printf("%lld %lld/%lld\n", SumFZ / SumFM, abs(SumFZ) % SumFM, SumFM);
	}else{
		printf("%lld/%lld\n",SumFZ,SumFM);
	}

	return 0;
}

同类题型

视频讲解


⬅️ L1-008 求整数段和 🏠 00-天梯赛 ➡️ L1-010 比较大小